package com.itheima.tlias84.config;

import com.itheima.tlias84.interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * spring配置类  :一般用来配置拦截器,跨域配置,等等配置
 *
 * @Configuration 是配置类的特化注解 组合了@Compoent
 *
 * 过滤器(Filter)与拦截器(Interceptor)的区别:
 * 相同点:执行都在controller(servlet)之前
 * 不同点:
 * 1.技术提供方: 过滤器 ->servlet   拦截器->spring
 * 2.执行顺序:  先执行过滤器 ->后执行拦截器
 * 3.拦截力度:  过滤器过滤力度粗  ->编码转换,时间格式转换
 *            拦截器拦截力度细  ->登录认证,接口日志记录
 *
 *   如果继承 extends WebMvcConfigurationSupport springboot 会自己处理时间
 *   如果想使用自定义的时间格式 implements WebMvcConfigurer
 *
 *
 */

//@Component
@Configuration
//public class WebMvcConfig extends WebMvcConfigurationSupport {
public class WebMvcConfig implements WebMvcConfigurer {
    @Resource
    LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(loginInterceptor)
                //添加拦截路径
                .addPathPatterns("/**")
                //排除登录路径
                .excludePathPatterns("/login","/yml","/createBean");
    }

}
